package com.micro.ai.auth.service;

import com.micro.ai.auth.dto.LoginRequest;
import com.micro.ai.auth.dto.PhoneLoginRequest;
import com.micro.ai.auth.dto.TokenResponse;

/**
 * 认证服务接口
 * 
 * @author micro-ai
 * @since 0.0.1
 */
public interface AuthService {

    /**
     * 用户登录
     * 
     * @param request 登录请求
     * @param ipAddress 客户端IP地址
     * @param userAgent 客户端User-Agent
     * @return 令牌响应
     */
    TokenResponse login(LoginRequest request, String ipAddress, String userAgent);

    /**
     * 手机号登录
     * 
     * @param request 手机号登录请求
     * @param ipAddress 客户端IP地址
     * @param userAgent 客户端User-Agent
     * @return 令牌响应
     */
    TokenResponse phoneLogin(PhoneLoginRequest request, String ipAddress, String userAgent);

    /**
     * 用户登出
     * 
     * @param token 访问令牌
     */
    void logout(String token);

    /**
     * 刷新令牌
     * 
     * @param refreshToken 刷新令牌
     * @return 新的令牌响应
     */
    TokenResponse refreshToken(String refreshToken);

    /**
     * 验证令牌
     * 
     * @param token 访问令牌
     * @return 是否有效
     */
    boolean validateToken(String token);
}

